iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
Mobile Development

自己的 app 自己寫系列 第 5

[Day5] 總是逃避看文檔的我是混蛋嗎

  • 分享至 

  • xImage
  •  

今天沒有跟著 tutorial 繼續往下走,CS193P 單集也有點長看不完QQ
於是就決定翻翻 Swift Doc 然後筆記一下吧。

struct & class

struct & class 有很多相似的地方,都可以在裡面儲存變數,都可以在裡面寫函式。不過兩個有一個根本上的差異,struct 是 pass by value,class 則是 pass by ref。

value type 的意思就是,當今天這個 struct 的 instance 被指給另一個變數,或者被當成參數傳給函式時,傳遞的會是實際的值,而不是記憶體位置,所以兩個 instance 之間是被獨立開來的。

而 reference type 則是相反,當 class a 被 assign 給另一個變數 b,由於兩方指向同一個 instance,任何一方的改動都會造成 instance 的變化,而這是好是壞就看使用情境了。

至於要怎麼判斷兩個 class instance 是否相同?swift 裡面提供了兩種 operator。=== 可以判斷是否為同一個 instance,== 則是判斷兩個 instance 是否 equivalent in value。

最後,什麼時候使用 struct,什麼時候使用 class 呢?文件 中給出的建議是,基本上預設使用 struct( swift 的 struct 已經涵括了很多其他語言中 class 裡面有的 feature),如果是很多地方都可共用的 instance 才用 struct(像是用來處理 local db 的連線),不過這要盡可能謹慎使用。


上一篇
[Day4] 十點多開始寫鐵人要寫到幾點才能完成
下一篇
[Day6] 兩場會議都超時的話要怎麼在夾縫中寫文
系列文
自己的 app 自己寫13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言